.fp 5 CW
.de Af
.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
..
.de aF
.ie \\$3 .ft \\$1
.el \{\
.ds ;G \&
.nr ;G \\n(.f
.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
\\*(;G
.ft \\n(;G \}
..
.de L
.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
.de LR
.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
.de RL
.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
..
.de EX		\" start example
.ta 1i 2i 3i 4i 5i 6i
.PP
.RS 
.PD 0
.ft 5
.nf
..
.de EE		\" end example
.fi
.ft
.PD
.RE
.PP
..
.TH OPTGET 3
.SH NAME
optget \- option parse assist
.SH SYNOPSIS
.EX
#include <option.h>

Opt_t
{
};

Optdisc_t
{
	unsigned long  version;
	unsigned long  flags;
	char*          catalog;
	Optinfo_f      infof;
};

Opt_t   opt_info;

void    optinit(Optdisc_t* \fIdisc\fP, Error_f \fIerrorf\fP);
int     optget(char** \fIargv\fP, const char* \fIusage\fP);
int     optstr(const char* \fIstring\fP, const char* \fIusage\fP);
int     optjoin(char** \fIargv\fP, ... [int (*\fIoptfun\fP)(char** \fIargv\fP, int \fIlast\fP)]);
char*   optusage(const char* \fIopts\fP);
int     optesc(Sfio_t* \fIsp\fP, const char* \fIstring\fP, int \fIflags\fP);
.EE
.SH DESCRIPTION
.SH "SEE ALSO"
